//
// Lambertian.hpp for  in ~/Dropbox/Projets/raytracer-2016/Includes/BRDFs/
//
// Made by Jonathan
// Login   <ledey_l@epitech.net>
//
// Started on  Wed Sep 25 23:35:25 2013 Jonathan
// Last update Wed Sep 25 23:46:03 2013 Jonathan
//

#ifndef				LAMBERTIAN_HPP_
# define			LAMBERTIAN_HPP_

# include			"BRDFs/BRDF.hpp"

namespace			BRDFs
{
  class				Lambertian : public BRDF
  {
  private:
    long double			mKd;
    Maths::Color		mCd;

  protected:

  public:
    Lambertian(void);
    Lambertian(Lambertian const &rLambertian);
    Lambertian			&operator=(Lambertian const &rOther);
    ~Lambertian(void);

    virtual Lambertian		*Clone(void) const;
    virtual Maths::Color	F(Maths::ShadeRec const &rShadeRec, Maths::Vector const &rWo, Maths::Vector const &rWi) const;
    virtual Maths::Color	Rho(Maths::ShadeRec const &rShadeRec, Maths::Vector const &rWo) const;
    void			SetKa(long double rKa);
    void			SetKd(long double rKd);
    void			SetCd(Maths::Color const &rColor);
    void			SetCd(long double mR, long double mG, long double mB);
    void			SetCd(long double mColor);
  };
};

#endif				/* LAMBERTIAN_HPP_ */
